package cn.iocoder.yudao.module.call.convert.location;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
import cn.iocoder.yudao.module.call.controller.admin.location.vo.LocationRespVO;
import cn.iocoder.yudao.module.call.controller.admin.vosnumber.vo.VosNumberRespVO;
import cn.iocoder.yudao.module.call.dal.dataobject.location.LocationDO;
import cn.iocoder.yudao.module.call.dal.dataobject.vosnumber.VosNumberDO;
import cn.iocoder.yudao.module.system.api.tenant.dto.TenantDTO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;
import java.util.Map;

@Mapper
public interface VosNumberConverter {
    VosNumberConverter INSTANCE = Mappers.getMapper(VosNumberConverter.class);

    default VosNumberRespVO convert(VosNumberDO data, Map<Long, TenantDTO> tenantMap) {

        VosNumberRespVO resp = BeanUtils.toBean(data, VosNumberRespVO.class);
        // 负责人
        MapUtils.findAndThen(tenantMap, data.getTenantId(), (tenant) -> resp.setTenantName(tenant.getName()));

        resp.setLocationName(AreaUtils.format(data.getLocationId().intValue()));
        return resp;
    }


    default PageResult<VosNumberRespVO> convert0(PageResult<VosNumberDO> pageResult, Map<Long, TenantDTO> tenantMap) {
        List<VosNumberRespVO> dataList = CollectionUtils.convertList(pageResult.getList(), caseDO -> convert(caseDO, tenantMap));
        PageResult<VosNumberRespVO> newResult = new PageResult<VosNumberRespVO>();
        newResult.setList(dataList);
        newResult.setTotal(pageResult.getTotal());
        return newResult;
    }


}
